package com.mercury.design.template.func;


import lombok.extern.slf4j.Slf4j;


/**
 * 模板工厂(函数式接口方式)
 * 工人的超类
 * <p>
 * 模板方法模式中的三类角色
 * 1、具体方法(Concrete Method)
 * 2、钩子方法(Hook Method)
 * <p>*
 *
 * @author mercury
 */
@Slf4j
public class BaseHandler {


    /**
     * 具体方法
     */
    public final void workOneDay(Actuator actuator) {
        log.info("workOneDay-----------------work start----------------");
        if (isNeedPrintDate()) {
            //是否开启模板
            return;
        }

        actuator.execute();

        log.info("workOneDay-----------------work end----------------");
    }


    /**
     * 钩子方法
     */
    public boolean isNeedPrintDate() {
        return false;
    }


}
